package com.controller;

import com.bean.Cart;
import com.common.R;
import com.service.CartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//1.3个或者为2个注解
@Controller
@ResponseBody
//@RestController为以上两个注解的结合体
//解决跨域问题
@CrossOrigin
//注意，该部分需要和前端对应，但是根据自己的代码视情况而定，一定要一致。
@RequestMapping("/CartController")
public class CartController {
//    在controller添加的Autowired为Service层
//    在ServiceImpl层添加的Atuowired为mapper层
    @Autowired
    private CartService cartService;


//    添加方法的时候统一为 private R xxx(){}
//    注意该方法名需要和前端对应
//    查询为GET   添加为POST  修改为PUT  删除为DELETE
    @GetMapping("/listCart")
    private R listCart(Cart cart) {
        try {
            List<Cart> carts = cartService.listCart(cart);
            return R.ok().data(carts);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @PostMapping("/saveCart")
    private R saveCart(Cart cart) {
        try {
            int i = cartService.saveCart(cart);
//            在这里可以直接返回R.ok();保存和删除数据不需要返回值。
//            return R.ok().data(i);
            //            以下代码适合没有返回值的，例如添加，删除
            if (i>0){
                return R.ok().msg("保存成功");
            }else {
                return R.error().msg("保存失败");
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @DeleteMapping("/removeCart")
    private R removeCart(Cart cart) {
        try {
            int i = cartService.removeCart(cart);
//            return R.ok().data(i);
            //            以下代码适合没有返回值的，例如添加，删除
            if (i>0){
                return R.ok().msg("删除成功");
            }else {
                return R.error().msg("删除失败");
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @PutMapping("/updateCart")
    private R updateCart(Cart cart) {
        try {
            int i = cartService.updateCart(cart);
            return R.ok().data(i);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
